/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package desarrollosoft.ghce.servicio.implementaciones;

import desarrollosoft.ghce.dao.interfaces.IEspecialidadDAO;
import desarrollosoft.ghce.entidades.Especialidad;
import desarrollosoft.ghce.servicio.interfaces.IServicioEspecialidades;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author ariel
 */
@Service("servicioEspecialidades")
public class ServicioEspecialidades implements IServicioEspecialidades {

    @Autowired
    @Qualifier("especialidadDAO")
    private IEspecialidadDAO especialidadDAO;
    
    @Override
    public List<Especialidad> obtenerTodasEspecialidades() {
        return especialidadDAO.buscarTodasEspecialidades();
    }

    @Override
    public List<Especialidad> obtenerEspecialidades(String nombre) {
        return especialidadDAO.buscarPorNombre(nombre);
    }

    @Override
    @Transactional
    public void modificarEspecialidad(Especialidad especialidad) throws Exception {
        String nombre = especialidad.getNombre();
        if (nombre != null && nombre.length() != 0) {
            String nombreMayusculas = nombre.toUpperCase();
            if (especialidadDAO.existeEspecialidadConMismoNombreYdiferenteId(especialidad.getId(), nombreMayusculas)) {
                throw new Exception("Ya existe una Especialidad con ese nombre");
            }
        }
        especialidadDAO.modificarEspecialidad(especialidad);
    }

    @Override
    @Transactional
    public void crearEspecialidad(Especialidad especialidad) throws Exception {
        String nombre = especialidad.getNombre();
        if (nombre != null && nombre.length() != 0) {
            String nombreMayusculas = nombre.toUpperCase();
            if (especialidadDAO.existeEspecialidadConNombre(nombreMayusculas)) {
                throw new Exception("Ya existe una Especialidad con ese nombre");
            }
        }
        especialidadDAO.crearEspecialidad(especialidad);
    }

    @Override
    @Transactional
    public void eliminarEspecialidad(Especialidad especialidad) throws Exception {
        especialidadDAO.eliminarEspecialidad(especialidad);
    }
    
}
